package sortAlgorithm.shellSort;

import java.util.Arrays;

/**
 * @author： pang-yun
 * @date： 2021-10-08 10:09
 * 功能目的 ：用于 希尔排序是  插入排序的进阶版  可以解决 小数值过多交换的问题
 *          只是在 插入排序的基础上 增加了步长
 */

public class ShellDemo {
    public static void main(String[] args) {
        int[] arr =new int[]{11,10,9,0,7,8,6,5};
        shellDemo(arr);
    }
    public static void shellDemo(int[] arr) {
        int insertVal=0;
        int insertIndex=0;
        for (int step=arr.length/2; step>0; step/=2){
            for (int i=step;i<arr.length;i++){
                insertVal=arr[i];
                insertIndex=i-step;
                while (insertIndex>=0 && insertVal<arr[insertIndex]){
                    arr[insertIndex+step]=arr[insertIndex];
                    insertIndex-=step;
                }
                arr[insertIndex+step]=insertVal;
            }
            System.out.println(Arrays.toString(arr));

        }
    }
}
